import jieba  # 分词
from PIL import Image  # 图片处理
from matplotlib import pyplot as plt  # 绘图数据可视化
from wordcloud import WordCloud  # 词云
import numpy as np  # 矩阵运算
import mysql.connector

# MySQL 数据库连接配置
db_config = {
    'user': '172.20.10.8',
    'password': '111111',
    'host': 'localhost',
    'database': 'scrapy_status'
}

# 准备词云所需要的文字
conn = mysql.connector.connect(**db_config)
cur = conn.cursor()
sql = 'SELECT comment_content FROM comment'
cur.execute(sql)
data = cur.fetchall()
text = ''
for item in data:
    if item[0]:  # 检查内容是否为 None
        text += item[0]  # 将所有文本拼接到一起
cur.close()
conn.close()

# 分词
cut = jieba.cut(text)
string = ' '.join(cut)

# 打开遮罩图片
img = Image.open(r'static\assets\img\tree.jpg')
img_array = np.array(img)  # 将图片转变为图片数组
wc = WordCloud(
    background_color='white',  # 形成词云图片背景
    mask=img_array,  # 遮罩文件为数组
    font_path='msyhbd.ttc',  # 字体 C:\Windows\Fonts\微软雅黑
)
wc.generate_from_text(string)  # 从文本中选择生成的词云对象

# 绘制图片
fig = plt.figure(1)  # 从第一个位置开始绘制
plt.imshow(wc)  # 按照词云 wc 的规则进行显示词云图片
plt.axis('off')  # 关闭坐标轴

# 输出词云图片到文件
plt.savefig(r'static\assets\img\wordcloud.jpg', dpi=500)  # 分辨率500

# 查看效果
plt.show()  # 显示绘图窗口
